package com.company.service;

import com.company.exception.TaskConflictException;
import com.company.model.Task;
import org.joda.time.DateTime; // 必须导入 Joda-Time 的 DateTime
import java.util.List;
import java.util.Map;
import java.util.Set;

//任务服务接口，提供任务管理的核心功能
//定义了任务的增删改查、统计和备份等操作

public interface TaskService {
    //添加新任务
    void addTask(Task task) throws TaskConflictException;

    //更新现有任务
    void updateTask(Task task);

    //根据任务ID获取任务详情
    Task getTaskById(int taskId);

    //根据指定日期获取任务列表
    List<Task> getTasksByDate(DateTime date);

    //获取指定周开始的整个星期的任务列表
    List<Task> getTasksByWeek(DateTime weekStart);

    //获取指定月开始的整个月的任务列表
    List<Task> getTasksByMonth(DateTime monthStart);

    //获取即将到来的任务列表
    List<Task> getUpcomingTasks(int minutes);

    //获取所有任务并按时间排序
    Set<Task> getAllTasksSortedByTime();

    //获取指定年份和周次的每周统计数据
    Map<String, Integer> getWeeklyStats(int year, int week);

    //获取指定年份和月份的每月统计数据
    Map<String, Integer> getMonthlyStats(int year, int month);

    //备份任务数据到指定文件
    void backupData(String filePath);
}
